package abd.pr1.Interface;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.util.Date;
import java.util.List;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSlider;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.border.EmptyBorder;

import com.toedter.calendar.JDateChooser;

import abd.pr1.Models.Actor;
import abd.pr1.Models.ActoresPersonajesModel;
import abd.pr1.Models.Episodio;
import abd.pr1.Models.EpisodiosModel;
import abd.pr1.Models.Personaje;

public class EpisodioWindow extends JFrame{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private JPanel contentPane;
	private JLabel nombre;
	private JLabel sinopsis;
	private JLabel orden;
	private JLabel temporada;
	private JLabel estreno;
	private JTextField nombreText;
	private JTextArea sinopsisText;
	private JTextField ordenText;
	private JTextField temporadaText;
	private JDateChooser estrenoText;
	private JButton cerrar;
	private JSlider votoSlider;
	private JLabel puntuacionText;
	private JButton calificarEpisodio;
	private JTable tablaActoresPersonajes;
	private JTextPane comentariosEpisodio;
	private JButton nuevoComentario;
	public EpisodioWindow(){
		super();
		this.build();
		this.setSize(640, 620);
		this.setLocationRelativeTo(null);
		this.setTitle("Informacion de episodio");
		this.setVisible(true);
	}

	private void build(){
		
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		
		this.getContentPane().setLayout(new BorderLayout());
		
		nombre = new JLabel("Titulo");
		sinopsis = new JLabel("Sinopsis");
		orden = new JLabel("Orden");
		temporada = new JLabel("Temporada");
		estreno = new JLabel("Estreno");
		
		nombreText = new JTextField();
		sinopsisText = new JTextArea();
		sinopsisText.setLineWrap(true);
		ordenText = new JTextField();
		temporadaText = new JTextField();
		estrenoText = new JDateChooser();
		
		 cerrar = new JButton("Cerrar");
		 cerrar.setActionCommand("cerrar_episodio");
		
		 votoSlider = new JSlider(JSlider.HORIZONTAL, 0, 10, 0);
		    votoSlider.setPaintTicks(true);
		    votoSlider.setMajorTickSpacing(1);
		    votoSlider.setPaintLabels(true);
		    
		    JLabel puntuacionLabel = new JLabel("Puntuacion Media:");
		    puntuacionText = new JLabel();
		    calificarEpisodio = new JButton("Calificar Episodio");
		    calificarEpisodio.setActionCommand("calificar_episodio");
		    tablaActoresPersonajes = new JTable();
		    JLabel comentariosLabel = new JLabel("Comentarios");
		    comentariosEpisodio= new JTextPane();
		    comentariosEpisodio.setEditable(false);
		    nuevoComentario = new JButton("Nuevo Comentario");
			 nuevoComentario.setActionCommand("nuevo_comentario");
	    JPanel datosSerie = new JPanel();
		datosSerie.setLayout(new BoxLayout(datosSerie, BoxLayout.Y_AXIS));
	
		datosSerie.add(nombre);
		datosSerie.add(nombreText);
		datosSerie.add(sinopsis);
		datosSerie.add(new JScrollPane(sinopsisText));
		datosSerie.add(orden);
		datosSerie.add(ordenText);
		datosSerie.add(temporada);
		datosSerie.add(temporadaText);
		datosSerie.add(estreno);
		datosSerie.add(estrenoText);
		datosSerie.add(votoSlider);
		datosSerie.add(calificarEpisodio);
		datosSerie.add(puntuacionLabel);
		datosSerie.add(puntuacionText);
		datosSerie.add(new JScrollPane(tablaActoresPersonajes), BorderLayout.CENTER);
		datosSerie.add(comentariosLabel);
		datosSerie.add(new JScrollPane(comentariosEpisodio),BorderLayout.CENTER);
		datosSerie.add(nuevoComentario);
	
		JPanel botones = new JPanel();
		botones.add(cerrar);
		
		this.getContentPane().add(datosSerie,BorderLayout.CENTER);
		this.getContentPane().add(botones,BorderLayout.SOUTH);
		
		
	}
	public void addListener(ActionListener a){
		calificarEpisodio.addActionListener(a);
		cerrar.addActionListener(a);
		nuevoComentario.addActionListener(a);
		
	}

	public void setNombre(String nombre){
		this.nombreText.setText(nombre);
	}
	public void setOrden(int orden){
		this.ordenText.setText(Integer.toString(orden));
	}
	public void setTemporada(int temporada){
		this.temporadaText.setText(Integer.toString(temporada));
	}
	public void setSinopsis(String sinopsis){
		this.sinopsisText.setText(sinopsis);
	}
	public void setEstreno(Date estreno){
		this.estrenoText.setDate(estreno);
	}
	public void setPuntuacion(Double puntuacion){
		this.puntuacionText.setText(puntuacion.toString());
	}
	public Integer getCalificacion(){
		return this.votoSlider.getValue();
	}
	public void setCalificacion(int calificacion){
		this.votoSlider.setValue(calificacion);
	}
	public void setActoresPersonajesTable(List<Actor> actores, List<Personaje> personajes){
		this.tablaActoresPersonajes.setModel(new ActoresPersonajesModel(actores,personajes));
	}
	public void setComentario(String comentarios){
		this.comentariosEpisodio.setText(comentarios);
	}
}
